#include <stdio.h>
#include <stdlib.h>


#define MAX_SIZE 100  
typedef struct {
    int data[MAX_SIZE];  
    int length;          
} SeqList;

// 1. 初始化顺序表
void InitList(SeqList *L) {
    L->length = 0;  // 初始化长度为0
}

// 2. 在指定位置插入元素(位置从1开始)
int InsertList(SeqList *L, int pos, int elem) {
    if (pos < 1 || pos > L->length + 1) {
        printf("插入位置不合法!\n");
        return 0;  // 插入失败
    }
    
    if (L->length >= MAX_SIZE) {
        printf("顺序表已满，无法插入!\n");
        return 0;  // 插入失败
    }
    
    for (int i = L->length; i >= pos; i--) {
        L->data[i] = L->data[i - 1];
    }
    
    L->data[pos - 1] = elem;
    L->length++;  
    return 1;     
}

// 3. 获取顺序表元素个数
int GetLength(SeqList *L) {
    return L->length;
}

// 4. 获取指定位置的元素(位置从1开始)
int GetElem(SeqList *L, int pos, int *elem) {
    
    if (pos < 1 || pos > L->length) {
        printf("位置不合法!\n");
        return 0;  
    }
    
    *elem = L->data[pos - 1];
    return 1;    
}

// 5. 销毁顺序表
void DestroyList(SeqList *L) {
    L->length = 0;  
}

int main() {
    SeqList L;
    int i, elem;
    
    // 初始化顺序表
    InitList(&L);
    
    // 存入1到10
    for (i = 1; i <= 10; i++) {
        InsertList(&L, i, i);
    }
    

    InsertList(&L, 5, 100);
    

    printf("顺序表元素个数: %d\n", GetLength(&L));
    

    printf("顺序表所有元素: ");
    for (i = 1; i <= GetLength(&L); i++) {
        GetElem(&L, i, &elem);
        printf("%d ", elem);
    }
    printf("\n");

    DestroyList(&L);
    
    return 0;
}
